package ucc.request;

import java.util.ArrayList;
import persistance.dal.CaisseDuJourFinder;
import persistance.dal.ClasseDeProduitFinder;
import persistance.dal.CompteUtilisateurFinder;
import persistance.dal.ContenanceFinder;
import persistance.dal.FonctionFinder;
import persistance.dal.OperationCaisseFinder;
import persistance.dal.ProduitFinder;
import persistance.dal.ResumeCaisseFinder;
import persistance.dal.TypeDeProduitFinder;
import ucc.objects.CaisseDuJourDTO;
import ucc.objects.ClasseDeProduitDTO;
import ucc.objects.CompteUtilisateurDTO;
import ucc.objects.ContenanceDTO;
import ucc.objects.FonctionDTO;
import ucc.objects.OperationCaisseDTO;
import ucc.objects.ProduitDTO;
import ucc.objects.ResumeCaisseDTO;
import ucc.objects.TypeDeProduitDTO;

public class UccViewerImpl implements UccViewer {

	public CompteUtilisateurDTO leCompteUtilisateurDe(String nomDUtilisateur) {
		return CompteUtilisateurFinder.INSTANCE
				.leCompteUtilisateurDe(nomDUtilisateur);
	}

	public ArrayList<CompteUtilisateurDTO> lesComptesUtilisateurs() {
		return CompteUtilisateurFinder.INSTANCE.lesComptesUtilisateurs();
	}

	public FonctionDTO laFonctionNum(int id) {
		return FonctionFinder.INSTANCE.laFonctionNum(id);
	}

	public ArrayList<FonctionDTO> lesFonctions() {
		return FonctionFinder.INSTANCE.lesFonctions();
	}

	public TypeDeProduitDTO leTypeDeProduitNum(int id) {
		return TypeDeProduitFinder.INSTANCE.leTypeDeProduitNum(id);
	}

	public ArrayList<TypeDeProduitDTO> lesTypesDeProduits() {
		return TypeDeProduitFinder.INSTANCE.lesTypesDeProduits();
	}

	public ClasseDeProduitDTO laClasseDeProduitNum(int id) {
		return ClasseDeProduitFinder.INSTANCE.laClasseDeProduitNum(id);
	}

	public ArrayList<ClasseDeProduitDTO> lesClassesDeProduits() {
		return ClasseDeProduitFinder.INSTANCE.lesClassesDeProduits();
	}

	public ContenanceDTO laContenanceNum(int id) {
		return ContenanceFinder.INSTANCE.laContenanceNum(id);
	}

	public ArrayList<ContenanceDTO> lesContenances() {
		return ContenanceFinder.INSTANCE.lesContenances();
	}

	public ProduitDTO leProduitNum(int id) {
		return ProduitFinder.INSTANCE.leProduitNum(id);
	}

	public ArrayList<ProduitDTO> lesProduits() {
		return ProduitFinder.INSTANCE.lesProduits();
	}

	public ArrayList<ProduitDTO> lesProduits(boolean actif) {
		return ProduitFinder.INSTANCE.lesProduits(actif);
	}

	public ArrayList<ProduitDTO> lesProduitsDeLaClasse(
			ClasseDeProduitDTO classeDeProduit, boolean actif) {
		return ProduitFinder.INSTANCE.lesProduitsDeLaClasse(classeDeProduit,
				actif);
	}

	public OperationCaisseDTO lOperationDeCaisseNum(Long id) {
		return OperationCaisseFinder.INSTANCE.lOperationCaisseNum(id);
	}

	public ArrayList<OperationCaisseDTO> lesOperationsDeLaCaisse(
			CaisseDuJourDTO caisseDuJour) {
		return OperationCaisseFinder.INSTANCE
				.lesOperationsCaisseDe(caisseDuJour);
	}

	public ArrayList<OperationCaisseDTO> lesOperationsDeLaCaisse(int id) {
		return OperationCaisseFinder.INSTANCE.lesOperationsCaisseDe(id);
	}

	public CaisseDuJourDTO laCaisseOuvertePour(CompteUtilisateurDTO utilisateur) {
		return CaisseDuJourFinder.INSTANCE.laCaisseOuvertePour(utilisateur);
	}

	public ArrayList<ResumeCaisseDTO> leResumeDeCaissePour(
			CaisseDuJourDTO caisse) {
		return ResumeCaisseFinder.INSTANCE.leResumeDeCaissePour(caisse);
	}

	public ResumeCaisseDTO leResumeDeCaissePour(CaisseDuJourDTO caisse,
			ProduitDTO produit, boolean venteAnimateur) {
		return ResumeCaisseFinder.INSTANCE.leResumeDeCaissePour(caisse,
				produit, venteAnimateur);
	}

	public double leFondDeCaisseLogique(CaisseDuJourDTO caisseDuJour) {
		return CaisseDuJourFinder.INSTANCE.leFondDeCaisseLogique(caisseDuJour);
	}

	public CaisseDuJourDTO laCaisseDuJourCompleteNum(int id) {
		return CaisseDuJourFinder.INSTANCE.laCaisseDuJourCompleteNum(id);
	}

	@Override
	public ArrayList<ProduitDTO> lesProduitsVendusTrie(
			CaisseDuJourDTO caisseDuJour, ClasseDeProduitDTO classe,
			boolean venteAnimateur) {
		return CaisseDuJourFinder.INSTANCE.lesProduitsVendusTrie(caisseDuJour,
				classe, venteAnimateur);
	}

	@Override
	public int quantiteVenduPourCaisseDuJourEtProduit(
			CaisseDuJourDTO caisseDuJour, ProduitDTO produit,
			boolean venteAnimateur) {
		return ResumeCaisseFinder.INSTANCE
				.quantiteVenduPourCaisseDuJourEtProduit(caisseDuJour, produit,
						venteAnimateur);
	}
}
